<?php

namespace app\api\model;

use app\common\model\Video as VideoModel;
class Video extends VideoModel
{
    /**
    * 获取视频列表（分页）
    * @param int $pageSize 每页显示条数
    * @return \think\Paginator
    * @throws \think\exception\DbException
    */
    public function getList($pageSize = 10)
    {
        $domain = request()->domain(); // 动态获取当前域名

        return $this->alias('video')
            ->field([
                'video.*', // 视频表所有字段
                'CONCAT("' . $domain . '/uploads/", uf.file_name) as video_img_url' // 拼接完整的图片URL
            ])
            ->join('upload_file uf', 'video.video_img = uf.file_id', 'LEFT') // 关联 upload_file 表
            ->where('video.is_delete', '=', 0) // 过滤未删除的数据
            ->where('video.video_status', '=', 1) // 过滤未删除的数据
            ->order(['video.video_sort' => 'asc', 'video.create_time' => 'desc']) // 排序
            ->paginate($pageSize); // 分页
    }

    /* 新增记录
    * @param array $data
    * @return false|int
    */
    public function add($data)
    {
        // 检查并清理数据
        if (!isset($data['title']) || empty($data['title'])) {
            $this->error = '问卷标题不能为空';
            return false;
        }
        $data['wxapp_id'] = self::$wxapp_id;
        // 插入记录
        return $this->allowField(true)->save($data);
    }
    /**
     * 更新记录
     * @param $data
     * @return bool|int
     */
    public function edit($data)
    {
        return $this->save($data, ['id' => $data['id']]);
    }

    /**
     * 软删除
     * @return false|int
     */
    public function setDelete()
    {
        return $this->save(['is_delete' => 1]);
    }

    /**
     * 获取问卷总数量
     * @param array $where
     * @return int|string
     */
    public static function getTotal($where = [])
    {
        $model = new static;
        !empty($where) && $model->where($where);
        return $model->where('is_delete', '=', 0)->count();
    }
    /**
     * 定义问卷和问题的一对多关联
     */
    public function questions()
    {
        return $this->hasMany('app\store\model\VideoQuestion', 'Video_id', 'id')->where("is_delete","0")
                    ->with(['options']); // 关联每个问题的选项
    }
}